package com.mbc.mapper;



import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.time.LocalDateTime;

/**
 * <p>
 * 用户签到表 Mapper 接口
 * </p>
 *
 * @author author
 * @since 2024-04-09
 */
@Mapper
public interface SignInMapper {

    @Update("")
    int getSelectUserSignIn(String userId, LocalDateTime now);

    /**
     * userId查询签到记录
     *
     * @param userId 用户 ID
     * @return int
     */
    @Select("select user_id from mbc_sign_in where user_id = #{userId}")
    Integer getUserId(String userId);

    /**
     * 获取用户最新时间
     *
     * @param userId 用户 ID
     * @return {@link LocalDateTime}
     */
    @Select("select max(sign_in_time) from mbc_sign_in where user_id = #{userId}")
    LocalDateTime getUserLatestTime(String userId);

    /**
     * 年月相同更新签到数据
     *
     * @param userId 用户 ID
     * @param now    现在
     * @return int
     */
    @Update("update mbc_sign_in set sign_in_days = sign_in_days + 1, sign_in_time = #{now} where user_id = #{userId}")
    int updateUserSignIn(String userId, LocalDateTime now);

    /**
     * 插入不同年份月份用户签到记录
     *
     * @param userId 用户 ID
     * @param year   年
     * @param month  月
     * @param now    现在
     * @return int
     */
    @Insert("insert into mbc_sign_in(user_id, year, month, sign_in_days, sign_in_time) values " +
            "(#{userId},#{year},#{month},1,#{now})")
    int insertUserSignIn(String userId, int year, int month, LocalDateTime now);

}
